package com.io.find_all_file;
import java.io.*;
public class FindAllFile {
	public static void main (String[] args) {
		File file = new File("D:\\");
		System.out.println(file.toString()+"\n");
		getAllFileNames ( file, 0 );
		getAllFileLength (file);
		System.out.println("��ǰĿ¼�������ļ��ܴ�СΪ: "+ len / 1000000 +"MB ( "+len / 1000000000+"GB )" );//���ֽ�������ΪMB(���ֽ�)
	}
	/**
	 * ���õݹ鷽ʽ����������Ŀ¼�µ���Ŀ¼���ļ�, �Լ������Լ�
	 * @param file
	 * @param level
	 */
	public static void getAllFileNames (File file, int level ){
		//������ļ�������ļ���С
		for (int i = 0; i < level; i++) {
			System.out.print("-\t ");
		}
		//����ļ���
		//System.out.println(file);
		System.out.println(file.getName());
		if( file == null || !file.exists() ){//���·������ļ�Ϊ�� �� û���ļ���Ŀ¼��//�˴��ǵݹ�ͷ, �ܹ�����
			return;
		}else{
			File[] fff = file.listFiles();
			if( file.isDirectory() ){//�����Ŀ¼
				if( fff != null )
				for ( File f : fff) {
					getAllFileNames( f , level +1 );// ÿѭ��һ��, ��ȼ�1
				}
			}
		}
	}
	/**���������ļ���С
	 * ���õݹ鷽ʽ����������Ŀ¼�µ���Ŀ¼���ļ��Ĵ�С, �Լ������Լ�
	 * @param file
	 * @param level
	 */
	private static long len ;//�����ļ����ܴ�С, ��λ: �ֽ�(Byte)
	public static void getAllFileLength(File file){
		//������ļ�������ļ���С
		if(file.isFile()){
			len += file.length();
		}
		
		if( file.isDirectory() || !file.exists() ){//�����Ŀ¼�����ѭ�������ļ�, �����ļ���С
			if( file == null || !file.exists() ){//�˴��ǵݹ�ͷ, �ܹ�����
					return;
			}else{
				File[] fff = file.listFiles();
				if( fff != null )
					for (  File f : fff ) {
						getAllFileLength ( f );//�ݹ鿪ʼ
					}
			}
		}
	}
	
}
